package com.ruoyi.business.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 结算单对象 order_settlement
 * 
 * @author ruoyi
 * @date 2025-05-06
 */
public class OrderSettlement extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 系统编号 */
    private Long settlementId;

    /** 结算单号 */
    @Excel(name = "结算单号")
    private String code;

    /** 结算单名称 */
    @Excel(name = "结算单名称")
    private String name;

    /** 组织机构系统编号 */
    @Excel(name = "组织机构系统编号")
    private Long organizationId;

    /** 供应商系统编号 */
    @Excel(name = "供应商系统编号")
    private Long supplierId;

    /** 合同系统编号 */
    @Excel(name = "合同系统编号")
    private Long contractId;

    /** 结算时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结算时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date settlementDate;

    /** 结算金额 */
    @Excel(name = "结算金额")
    private BigDecimal amount;

    /** 其他费用金额 */
    @Excel(name = "其他费用金额")
    private BigDecimal otherAmount;

    /** 结算总金额（结算金额 加 其他费用金额） */
    @Excel(name = "结算总金额", readConverterExp = "结=算金额,加=,其=他费用金额")
    private BigDecimal totalAmount;

    /** 结算备注 */
    @Excel(name = "结算备注")
    private String comment;

    /** 审批类型 0=结算审批 1=作废审批 */
    @Excel(name = "审批类型 0=结算审批 1=作废审批")
    private Long auditType;

    /** 审批状态 0=不需要审批 1=审批中 2=审批未通过 3=审批通过 4=审批撤销 */
    @Excel(name = "审批状态 0=不需要审批 1=审批中 2=审批未通过 3=审批通过 4=审批撤销")
    private Long auditStatus;

    /** 审批流实例id */
    @Excel(name = "审批流实例id")
    private String auditFlowInstanceId;

    /** 审批实例类型，1-严选审批 2-物资工匠审批 3-云枢审批 */
    @Excel(name = "审批实例类型，1-严选审批 2-物资工匠审批 3-云枢审批")
    private Long auditFlowInstanceType;

    /** 审核通过时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审核通过时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date auditPassDate;

    /** 结算类型：1-采购 2-商城 3-混凝土 4-传统租赁 5-专项 6-车辆 7-费用 8-商城租赁 9-货运结算 */
    @Excel(name = "结算类型：1-采购 2-商城 3-混凝土 4-传统租赁 5-专项 6-车辆 7-费用 8-商城租赁 9-货运结算")
    private Long settlementType;

    /** 结算状态 10=编制中 20=待确认 30=已拒绝 40=已确认 50=已结算 -100=已作废 */
    @Excel(name = "结算状态 10=编制中 20=待确认 30=已拒绝 40=已确认 50=已结算 -100=已作废")
    private Long status;

    /** 父结算单系统编号 */
    @Excel(name = "父结算单系统编号")
    private Long parentSettlementId;

    /** 作废原因 */
    @Excel(name = "作废原因")
    private String invalidReason;

    /** 提示 */
    @Excel(name = "提示")
    private String notice;

    /** 是否被锁定，锁定之后不能操作 */
    @Excel(name = "是否被锁定，锁定之后不能操作")
    private Long isLocked;

    /** 账单到期日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账单到期日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date billDueDate;

    /** 数据状态0-无效 1-有效 -999-删除 */
    @Excel(name = "数据状态0-无效 1-有效 -999-删除")
    private Long commonStatus;

    public void setSettlementId(Long settlementId) 
    {
        this.settlementId = settlementId;
    }

    public Long getSettlementId() 
    {
        return settlementId;
    }

    public void setCode(String code) 
    {
        this.code = code;
    }

    public String getCode() 
    {
        return code;
    }

    public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }

    public void setOrganizationId(Long organizationId) 
    {
        this.organizationId = organizationId;
    }

    public Long getOrganizationId() 
    {
        return organizationId;
    }

    public void setSupplierId(Long supplierId) 
    {
        this.supplierId = supplierId;
    }

    public Long getSupplierId() 
    {
        return supplierId;
    }

    public void setContractId(Long contractId) 
    {
        this.contractId = contractId;
    }

    public Long getContractId() 
    {
        return contractId;
    }

    public void setSettlementDate(Date settlementDate) 
    {
        this.settlementDate = settlementDate;
    }

    public Date getSettlementDate() 
    {
        return settlementDate;
    }

    public void setAmount(BigDecimal amount) 
    {
        this.amount = amount;
    }

    public BigDecimal getAmount() 
    {
        return amount;
    }

    public void setOtherAmount(BigDecimal otherAmount) 
    {
        this.otherAmount = otherAmount;
    }

    public BigDecimal getOtherAmount() 
    {
        return otherAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) 
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount() 
    {
        return totalAmount;
    }

    public void setComment(String comment) 
    {
        this.comment = comment;
    }

    public String getComment() 
    {
        return comment;
    }

    public void setAuditType(Long auditType) 
    {
        this.auditType = auditType;
    }

    public Long getAuditType() 
    {
        return auditType;
    }

    public void setAuditStatus(Long auditStatus) 
    {
        this.auditStatus = auditStatus;
    }

    public Long getAuditStatus() 
    {
        return auditStatus;
    }

    public void setAuditFlowInstanceId(String auditFlowInstanceId) 
    {
        this.auditFlowInstanceId = auditFlowInstanceId;
    }

    public String getAuditFlowInstanceId() 
    {
        return auditFlowInstanceId;
    }

    public void setAuditFlowInstanceType(Long auditFlowInstanceType) 
    {
        this.auditFlowInstanceType = auditFlowInstanceType;
    }

    public Long getAuditFlowInstanceType() 
    {
        return auditFlowInstanceType;
    }

    public void setAuditPassDate(Date auditPassDate) 
    {
        this.auditPassDate = auditPassDate;
    }

    public Date getAuditPassDate() 
    {
        return auditPassDate;
    }

    public void setSettlementType(Long settlementType) 
    {
        this.settlementType = settlementType;
    }

    public Long getSettlementType() 
    {
        return settlementType;
    }

    public void setStatus(Long status) 
    {
        this.status = status;
    }

    public Long getStatus() 
    {
        return status;
    }

    public void setParentSettlementId(Long parentSettlementId) 
    {
        this.parentSettlementId = parentSettlementId;
    }

    public Long getParentSettlementId() 
    {
        return parentSettlementId;
    }

    public void setInvalidReason(String invalidReason) 
    {
        this.invalidReason = invalidReason;
    }

    public String getInvalidReason() 
    {
        return invalidReason;
    }

    public void setNotice(String notice) 
    {
        this.notice = notice;
    }

    public String getNotice() 
    {
        return notice;
    }

    public void setIsLocked(Long isLocked) 
    {
        this.isLocked = isLocked;
    }

    public Long getIsLocked() 
    {
        return isLocked;
    }

    public void setBillDueDate(Date billDueDate) 
    {
        this.billDueDate = billDueDate;
    }

    public Date getBillDueDate() 
    {
        return billDueDate;
    }

    public void setCommonStatus(Long commonStatus) 
    {
        this.commonStatus = commonStatus;
    }

    public Long getCommonStatus() 
    {
        return commonStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("settlementId", getSettlementId())
            .append("code", getCode())
            .append("name", getName())
            .append("organizationId", getOrganizationId())
            .append("supplierId", getSupplierId())
            .append("contractId", getContractId())
            .append("settlementDate", getSettlementDate())
            .append("amount", getAmount())
            .append("otherAmount", getOtherAmount())
            .append("totalAmount", getTotalAmount())
            .append("comment", getComment())
            .append("auditType", getAuditType())
            .append("auditStatus", getAuditStatus())
            .append("auditFlowInstanceId", getAuditFlowInstanceId())
            .append("auditFlowInstanceType", getAuditFlowInstanceType())
            .append("auditPassDate", getAuditPassDate())
            .append("settlementType", getSettlementType())
            .append("status", getStatus())
            .append("parentSettlementId", getParentSettlementId())
            .append("invalidReason", getInvalidReason())
            .append("notice", getNotice())
            .append("isLocked", getIsLocked())
            .append("billDueDate", getBillDueDate())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("commonStatus", getCommonStatus())
            .toString();
    }
}
